url = 'https://www.acwing.com/problem/content/847/'

# 导入deque(队列)
from collections import deque

def bfs(state):
    # 初始化队列
    q = deque([state])
    # 记录每一次交换后的字符串，以及是操作的次数
    d = {state: 0}
    # 定义四种交换的操作
    dx = [-1, 0, 1, 0]
    dy = [0, 1, 0, -1]
    # 结束的条件
    end = '12345678x'
    
    while q:
        # 输出队列中的第一个情况
        t = q.popleft()
        # 判断交换之后是否满足结束条件
        if t == end:
            # 返回当前操作次数
            return d[t]
        # 获取当前操作次数
        distance = d[t]
        # 找到k的位置
        k = t.index('x')
        # 获取k的坐标
        x, y = k // 3, k % 3
        # 开始四种变换
        for i in range(4):
            # 获取可以变换的坐标
            a, b = x + dx[i], y + dy[i]
            # 放在坐标溢出
            if 0 <= a < 3 and 0 <= b < 3:
                idx = a * 3 + b
                # 交换位置
                t_list = list(t)
                t_list[k], t_list[idx] = t_list[idx], t_list[k]
                new_state = ''.join(t_list)
                if new_state not in d:
                    d[new_state] = distance + 1
                    q.append(new_state)
    
    return -1

state = ''.join(input().split())
print(bfs(state))
